package command;

import javax.swing.JOptionPane;

import org.uc3m.ed.Factory.panel.FactoriaPanel;
import org.uc3m.ed.implementacion.ComandoUtilizado;
import org.uc3m.ed.implementacion.Command;
import org.uc3m.ed.interfaz_grafica.ventana.PanelDibujo;
import org.uc3m.ed.interfaz_grafica.ventana.VentanaPrincipal;
import org.uc3m.ed.tad.arbol.ArbolBinarioAVL;

public class CommandAnyadirNodo implements Command {

	public void execute() {
		String valor;
		PanelDibujo panel= FactoriaPanel.metodoFactoria();
		ArbolBinarioAVL<Integer,Integer> avl=(ArbolBinarioAVL<Integer,Integer>) panel.getEstructura();
		
	
		if (avl!=null)
		{	
			valor=JOptionPane.showInputDialog("Introduce un Valor Numerico","N�mero");
			try{
				avl.anyadir(new Integer(valor),new Integer(valor));
				panel.setEstructura(avl);
				panel.getPilaComandos().push(new ComandoUtilizado("A",valor));
				panel.repaint();	
			}catch(NumberFormatException e){
				JOptionPane.showMessageDialog(VentanaPrincipal.getFrame(), "No has introducido un valor numerico","ERROR::301" ,JOptionPane.ERROR_MESSAGE );
			}catch(Exception e){
				JOptionPane.showMessageDialog(VentanaPrincipal.getFrame(), "Se ha produciodo una excepcion\nMirar la consola","CLASS::LE::CommandA�adirNodo ERROR::303" ,JOptionPane.ERROR_MESSAGE );
				e.printStackTrace();
			}
		}
		else
			JOptionPane.showMessageDialog(VentanaPrincipal.getFrame(), "Debes Crear una Lista Enlazada antes de a�adir un nodo","ERROR::302" ,JOptionPane.ERROR_MESSAGE );
		
	}

}
